package com.fbt.transfer.app.driver.util;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * SharedPreferences 管理类，用于存储和获取应用的偏好设置
 */
public class SharedPreferencesManager {

    private static final String PREFS_NAME = "transfer_driver_prefs";
    private final SharedPreferences sharedPreferences;

    public SharedPreferencesManager(Context context) {
        sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
    }

    /**
     * 存储字符串值
     *
     * @param key   键
     * @param value 值
     */
    public void putString(String key, String value) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.apply();
    }

    /**
     * 获取字符串值
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的字符串值，如果不存在则返回默认值
     */
    public String getString(String key, String defaultValue) {
        return sharedPreferences.getString(key, defaultValue);
    }

    /**
     * 存储整数值
     *
     * @param key   键
     * @param value 值
     */
    public void putInt(String key, int value) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putInt(key, value);
        editor.apply();
    }

    /**
     * 获取整数值
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的整数值，如果不存在则返回默认值
     */
    public int getInt(String key, int defaultValue) {
        return sharedPreferences.getInt(key, defaultValue);
    }

    /**
     * 存储布尔值
     *
     * @param key   键
     * @param value 值
     */
    public void putBoolean(String key, boolean value) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putBoolean(key, value);
        editor.apply();
    }

    /**
     * 获取布尔值
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的布尔值，如果不存在则返回默认值
     */
    public boolean getBoolean(String key, boolean defaultValue) {
        return sharedPreferences.getBoolean(key, defaultValue);
    }

    /**
     * 存储长整数值
     *
     * @param key   键
     * @param value 值
     */
    public void putLong(String key, long value) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putLong(key, value);
        editor.apply();
    }

    /**
     * 获取长整数值
     *
     * @param key          键
     * @param defaultValue 默认值
     * @return 存储的长整数值，如果不存在则返回默认值
     */
    public long getLong(String key, long defaultValue) {
        return sharedPreferences.getLong(key, defaultValue);
    }

    /**
     * 移除指定键的值
     *
     * @param key 键
     */
    public void remove(String key) {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(key);
        editor.apply();
    }

    /**
     * 清除所有偏好设置
     */
    public void clear() {
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.apply();
    }
}